SCANDISK
도스용 디스크 검사 프로그램이다. 윈도우가 실행된 상태에서 도스 프롬프트에서 Scandisk를 실행하면 윈도우용 디스크 검사 프로그램(Scandskw.exe)가 실행된다.
이 프로그램이 실행되기 위해서는 같은 폴더에 SCANDISK.INI 파일이 있어야 한다.
도스로 부팅한 다음 디스크 검사를 위해 Scandisk를 입력하면 한글 도스에서는 scandisk.exe가 실행되고, 영문 도스에서는 scandsk1.exe가 실행된다.
따라서, 디스켓으로 부팅한 후 영문 디스크 검사 프로그램이 실행되도록 하려면 C:\Windows\Command 디렉토리(폴더)에 있는 Scandsk1.exe(철자 주의) 파일을 디스켓에 Scandisk.exe로 이름을 바꿔 복사한다. 물론, 디스켓으로 Scandisk.ini 파일도 함께 복사해야 한다.
[참고]
디스크 검사 프로그램을 실행하면 그 결과가 SCANDISK.LOG 파일에 저장된다. 디스크에 어떤 문제가 있는지 알아보려면 이 파일을 열어보기 바란다. SCANDISK.LOG 파일은 루트 디렉토리에 저장된다. 윈도우용 디스크 검사 프로그램을 실행하면 C:\에 저장된다.
도스용 디스크 검사 프로그램의 실행 환경을 변경하려면 Scandisk.ini 파일을 편집해야 한다.
■ 명령어 위치
윈도우 시동 디스크로 부팅하면 진단 도구가 들어 있는 램 드라이브에 실행 파일 형태로 존재하는 외부 명령어(영문 디스크 검사 프로그램)
윈도우가 설치되어 있는 하드디스크(C:\Windows\Command)에 실행 파일 형태로 존재하는 외부 명령어
■ 사용법
SCANDISK [drive:] [/A] [/N] [/P]
■ 옵션 및 매개변수

drive: | 디스크 검사를 실행할 드라이브를 지정한다. 드라이브명을 지정하지 않으면 현행 드라이브를 검사한다.
/a | 지역 컴퓨터에 있는 모든 하드디스크 드라이브를 대상으로 디스크 검사를 실행한다. 이 옵션을 사용하면 드라이브 지정은 무시된다.
/n | 이 옵션을 사용하면 디스크 검사가 자동으로 시작되고 자동으로 종료된다. Autoexec.bat 배치 파일에 Scandisk가 실행되도록 지정하면 컴퓨터를 켤 때마다 디스크 검사가 실행되는데, 이 때 이 옵션을 지정하면 된다.
/p | 이 옵션을 지정하면 디스크 검사 프로그램이 발견한 오류를 수정하지 않는다.

■ 참고 사항
☞ 다른 응용 프로그램이 실행 중일 때 SCANDISK 사용
다른 프로그램이 실행중일 때 SCANDISK는 드라이브를 복구하기 위해 사용해서는 안된다.
SCANDISK는 원래 디스크 상에 변화가 없는 상태에서 사용될 수 있도록 설계되었다. 만약, 응용 프로그램이 파일을 사용하고 있는 중이라면 파일 할당표(FAT)에 디렉토리 구조를 업데이트하지 못한 경우도 있을 수 있다. 이 경우에 SCANDISK가 사용되면 아직 업데이트되지 않은 파일은 손상된 클로스터로 간주하기 때문에 디스크에 오류가 있는 것으로 판단하게 된다.
☞ SCANDISK.INI 파일의 구조
SCANDISK.INI 파일은 2개의 색션과 다수의 설정으로 구성되어 있다. SCANDISK.INI 파일 안에 있는 섹션은 [Environment] 색션과 [Custom] 색션이 있다.
[Environment] 색션은 SCANDISK의 사용 환경을 설정하는 색션으로 디스플레이 모니터의 종류, 마우스의 사용 여부 등에 관한 내용이 포함되어 있고, [Custom] 색션에는 사용자가 프롬프트 상에서 SCANDISK 명령어를 /custom 옵션과 사용할 때 디폴트로 사용될 디스크 검색 및 오류 복구에 관한 설정이 포함되어 있다.
다음은 SCANDISK.INI 파일의 내용에 관한 것이다. 항목 오른쪽의 값에서 붉은 색으로 표시된 값이 디폴트 값이다.
[ENVIRONMENT]

항목 | 값 | 설명
Display | Auto, Mono, Color, Off | 스캔디스크가 실행될 디스플레이 모드를 지정한다.
Mouse | On, Off | 마우스 사용 여부를 지정한다.
ScanTimeOut | On, Off | 디스크 표면 검사를 실행할지 묻는 화면이 나타나 있는 시간을 결정할 것인지 지정한다. Off로 설정하면 사용자가 선택할 때까지 디스크 표면 검사 여부를 묻는 화면이 사라지지 않는다.
NumPasses | 1∼65535 | 디스크 표면 검사를 수행할 때 각각의 클러스터를 몇번 조사할 것인지를 지정한다. 10 이상으로 지정하면 디스크 표면 검사 속도가 느려진다.
LabelCheck | On, Off | 디스크 이름(볼륨 레이블)에 부적절한 문자가 포함되어 있는지 점검할지를 지정한다.
LfnCheck | On, Off | 긴 파일 이름이 있는 경우 긴 파일 이름에 오류가 있는지 점검할지를 지정한다.
SpaceCheck | On, Off | 디스크 여유 공간의 용량이 부적절한지의 검사 여부를 설정한다. 노턴 고스트 이미지 파일에서 디스크로 복원한 경우 원본과 대상의 용량이 다른 경우에는 이 항목을 On으로 설정한 다음 디스크 검사를 수행해야 한다.
Mount | Prompt, Always, Never | 공간 늘림 프로그램으로 압축된 디스켓을 검사한 결과 이상이 없으면 자동으로 마운트할 것인지 지정한다. Prompt로 설정하면 마운트할 것인지 사용자에게 확인하고, Always는 항상 자동으로 마운트한다.

[CUSTOM]

항목 | 값 | 설명
DriveSummary | Auto, On, Off | 디스크 검사를 완료한 후 각각의 드라이브에 대해 드라이브 관련 정보를 화면에 표시할 것인지를 지정한다. Auto로 설정하면 디스크에 문제가 있는 경우에만 정보가 나타난다.
AllSummary | Auto, On, Off | 지역 컴퓨터에 있는 모든 드라이브를 검사한 다음 드라이브 관련 정보를 화면에 펴시할 것인지를 설정한다. Auto로 설정하면 디스크에 문제가 있는 경우에만 정보가 나타난다.
Surface | Never, Always, Prompt | 디스크 검사를 할 때 표면까지 검사할 것인지를 지정한다. Pompt로 설정하면 디스크 표면 검사를 할 것인지 사용자에게 확인하는 메시지가 나타난다. Scandisk /surface 와 같이 디스크 검사를 실행하면 이 항목의 설정은 무시되고 무조건 디스크 표면 검사를 실행한다.
CheckHost | Never, Always, Prompt | 압축 드라이브를 검사할 때 호스트 드라이브를 먼저 검사할지의 여부를 설정한다.
SaveLog | Off, Append, Overwrite | 루트 디렉토리에 SCANDISK.LOG 파일을 만들 것인지의 여부를 지정한다. Append는 기존의 로그 파일의 뒤에 덧붙이고, Overwrite는 기존 파일을 덮어쓴다.
Undo | Prompt, Never | 디스크 검사 프로그램이 수정한 내용이 올바르지 않을 때 이를 취소할 수 있는 Undo 파일을 만들 것인지를 지정한다.
다음 각 항목은 Prompt, Fix, Quit 중에서 선택할 수 있다. 디폴트 값은 Fix이다. Prompt : 디스크 검사 프로그램이 발견한 오류 내용을 수정할지 사용자에게 확인한다. Fix : 디스크 검사 프로그램이 발견한 문제를 사용자 확인 없이 수정한다. Quit : 디스크 검사 프로그램이 문제를 발견하면 오류를 수정하지 않고 프로그램을 종료한다.
DS_Header | Prompt, Fix, Quit | Double Space로 압축된 압축 볼륨 파일의 손상된 헤더를 수정할 것인지를 지정한다.
FAT_Media | Prompt, Fix, Quit | 손상되었거나 부적절한 FAT 유형을 발결했을 때 수정 여부를 지정한다.
Okay_Entries | Prompt, Fix, Quit | 손상되었지만 복구할 수 없는 파일이나 디렉토리의 수정 여부를 지정한다.
Bad_Chain | Prompt, Fix, Quit | 손상된 체인을 갖고 있는 파일이나 디렉토리의 수정 여부를 지정한다.
Crosslinks | Prompt, Fix, Quit | 파일 할당표(FAT) 상에서 교차 연결된 파일의 수정 여부를 지정한다. 대부분의 경우 교차 연결된 파일은 파일 삭제가 비정상적으로 완료되었을 때 발생한다.
다음 각 항목은 Prompt, Fix, Quit, Skip 중에서 선택할 수 있다. Prompt : 디스크 검사 프로그램이 발견한 오류 내용을 수정할지 사용자에게 확인한다. Fix : 디스크 검사 프로그램이 발견한 문제를 사용자 확인 없이 수정한다. Quit : 디스크 검사 프로그램이 문제를 발견하면 오류를 수정하지 않고 프로그램을 종료한다. Skip : 디스크 검사 프로그램이 오류를 발견해도 이를 수정하지 않고 다음 과정으로 넘어간다.
Boot_Sector | Prompt, Fix, Quit, Skip | 압축 드라이브 상의 손상된 부트 섹터의 수정 여부를 지정한다.
FSInfo_Sector | Prompt, Fix, Quit, Skip | 압축 드라이브 상에서의 부적절한 여유 공간 크기를 수정할 것인지 지정한다.
Invalid_MDFAT | Prompt, Fix, Quit, Skip | 부적절한 압축 드라이브의 파일 할당표를 수정할 것인지 지정한다.
DS_Crosslinks | Prompt, Fix, Quit, Skip | 압축 드라이브의 파일 할당표(MDFAT)의 교차 연결된 파일을 수정할 것인지를 지정한다.
DS_LostClust | Prompt, Fix, Quit, Skip | 압축 드라이브에서 로스트 클러스터를 수정할지를 지정한다.
DS_ Signatures | Prompt, Fix, Quit, Skip | 손상된 압축 볼륨 파일의 수정 여부를 지정한다.
Mismatch_FAT | Prompt, Fix, Quit, Skip | 압축 드라이브가 아닌 일반 드라이브에서 FAT에서의 파일 위치 정보와 실제 파일 위치가 다른 경우 이를 수정할지를 점검한다.
Bad_Clusters | Prompt, Fix, Quit, Skip | 압축 볼륨 파일의 물리적 손상이나 압축을 해제할 때 오류가 있으면 이를 수정할지를 지정한다.
Bad_Entries | Prompt, Delete, Quit | 손상되었거나 복구할 수 없는 디렉토리나 파일 목록을 삭제할 것인지를 지정한다. Prompt : 손상되었거나 복구할 수 없는 디렉토리나 파일 목록을 삭제할 것인지 사용자에게 확인한다. Delete : 손상되었거나 복구할 수 없는 디렉토리나 파일 목록을 사용자에게 확인하지 않고 삭제한다. Quit : 손상되었거나 복구할 수 없는 디렉토리나 파일을 발견하면 오류를 수정하지 않고 프로그램을 종료한다.
LostClust | Prompt, Save, Delete, Quit, Skip | 로스트 클러스터의 처리 방법을 지정한다. Prompt : 사용자에게 로스트 클러스터를 파일로 변환하여 저장할 것인지 삭제할 것인지 확인한다. Save : 사용자 확인없이 로스트 클러스터를 파일로 변환하여 루트 디렉토리에 저장한다. Delete : 로스트 클러스터를 사용자에게 확인하지 않고 삭제한다. Quit : 로스트 클러스터를 발견하면 오류를 수정하지 않고 프로그램을 종료한다. Skip : 로스트 클러스터를 발견해도 이를 수정하지 않고 다음 과정으로 넘어간다.

☞ SCANDISK로 복구한 디스크의 환원
SCANDISK가 디스크 상의 오류를 발견하면 사용자에게 UNDO 디스크를 만들 것인지를 확인한다. UNDO 디스크는 SCANDISK가 복구한 디스크를 원래의 오류가 있는 디스크로 환원하여 디스크 복구를 취소하기 위해 사용하는데, UNDO 디스크에는 오류에 관한 정보를 제공한 드라이브 뿐만 아니라 SCANDISK가 복구한 정보까지도 포함되어 있다.
UNDO 디스크는 SCANDISK가 UNDO 디스크를 만든 이후로 데이터를 기록하는 등의 변경된 적이 없는 경우에만 사용해야 한다. 만약, UNDO 디스크가 만들어진 다음에 드라이브에 데이터를 기록하여 디스크의 구조가 변경되었다면 UNDO 디스크는 SCANDISK의 복구를 취소하기 위하여 사용할 수 없다.
☞ SCANDISK의 종료 코드
SCANDISK는 사용자가 지정한 드라이브를 검색하거나 복구한 후에 운영 체제로 다음과 같은 종료 코드를 돌려준다.
SCANDISK에 의해 돌려진 에러 수준 종료 코드를 이용하여 배치 프로그램을 작성함으로서 보다 정확한 오류 원인을 파악할 수 있다.
종료 코드를 이용한 배치 프로그램의 작성 방법에 대해서는 Xcopy를 참조하기 바란다.

0 | SCANDISK가 디스크 상에서 오류를 발견하지 못하였다.
1 | 사용자가 적절하지 않은 명령어 형식을 사용하였기 때문에 실행되지 못하였다.
2 | 메모리 부족이나 내부적인 오류 때문에 SCANDISK가 갑자기 종료되었다.
3 | 사용자가 SCANDISK를 종료하기 전에 Exit를 선택하였다.
4 | SCANDISK가 사용자가 지정한 모든 드라이브 상의 모든 논리적인 오류를 점검하였지만, 디스크 표면을 물리적으로 조사하는 동안에 사용자가 Exit를 선택하여 임의로 종료하였다. 이 종료 코드는 SCANDISK가 정상적으로 종료되면 운영 체제로 돌려주지 않는 에러 수준 종료 코드이다.
254 | SCANDISK가 디스크 상의 오류를 발견하고 모두 복구하였다.
255 | SCANDISK가 오류는 발견하였지만, 모든 오류를 복구하지는 못하였다.

■ 사용 예
D 드라이브를 검사하고 디스크 검사를 자동으로 시작하고 종료하려면 다음과 같이 Scandisk를 실행한다.
scandisk d: /n
모든 하드 디스크를 검사하지만 디스크 검사가 발견한 오류를 수정하지 않도록 하려면다음과 같이 Scandisk를 실행한다.
scandisk /a /p
SCANDISK가 디스크의 오류를 발견하고 이를 복구하기 위하여 UNDO 디스크를 만들었다면, 이 디스크를 이용하여 SCANDISK가 복구하기 이전의 상태로 취소하려면 다음과 같이 SCANDISK 명령어를 사용한다. 단, UNDO 디스크는 A 드라이브에 있다고 가정한다.
scandisk /undo a:
■ SCANDISK의 단계적 사용법
프롬프트 상에서 아무런 옵션이나 매개변수 없이 SCANDISK가 단독으로 사용되면 현행 드라이브의 오류를 점검하고, 오류가 있는 경우 이를 복구한다.
SCANDISK가 디스크를 복구하기 위하여 가장 먼저 하는 일은 파일의 논리적인 오류를 점검하는 일이다.
SCANDISK가 디스크의 논리적인 오류를 점검하기 위하여 점검하는 디스크의 정보는 예전의 CHKDSK 명령어가 제공하였던 기능인 파일 할당표와 디렉토리의 구조, 파일 시스템에 관련된 정보들이다.
SCANDISK가 디스크의 논리적인 오류를 점검한 후에 논리적인 오류를 발견하면 사용자로 하여금 UNDO 디스크를 만들 것인지를 확인하는 대화상자가 나타난다. 만약, UNDO 디스크를 만들고자 한다면 이 대화 상자에서 <Create> 버튼을 선택한다. 그러면, UNDO 파일을 기록할 디스크를 선택하라는 대화상자가 나타난다. UNDO 파일은 현재 검사하고 있는 드라이브가 아닌 다른 드라이브를 선택해야 한다.
만약, 사용자가 지정한 디스크에 논리적인 오류가 없다면 SCANDISK는 다음 단계인 디스크의 표면 분석으로 작업을 진행하기 위하여 사용자에게 디스크 표면을 검사할 것인지를 확인한다.
이 대화상자에서 <Yes> 버튼을 누르면 디스크의 표면을 분석한다. 만약, 디스크의 표면 분석을 취소하려면 <No> 버튼을 선택한다. 만약, 디스크의 표면 분석을 취소하기 위하여 <No> 버튼을 선택한 경우 지금까지 분석한 결과를 토대로 로그 파일을 만든다. 이 때 만들어지는 로그 파일에는 표면 분석에 대한 결과가 기록되지 않는다.
디스크의 표면 분석을 시작하기 위하여 <Yes> 버튼을 선택하면 디스크 최적화 프로그램의 화면과 비슷하지만 단지 축소된 형태의 디스크 표면 분석 화면이 나타난다.
SCANDISK의 디스크 표면 분석을 위한 화면의 오른쪽에는 현재 분석하고 있는 드라이브와 드라이브의 총 클로스터의 수, 분석한 크로스터의 수, 오류가 있다고 판단되는 클로스터의 수를 나타내고, 그 아래에는 디스크 표면 블럭들의 용례에 대한 정보가 포함되어 있다. 화면의 맨 하단에는 디스크의 표면 분석을 완료한 비율을 숫자와 막대 그래프 형식으로 나타낸다.
디스크 표면 분석 화면에는 <More Info> 버튼과 <Exit> 버튼이 있는데, <Exit> 버튼은 디스크 표면의 분석을 중단하기 위하여 선택한다. 만약, 디스크 표면 분석이 완료되지 않았을 때 <Exit> 버튼을 선택하면 SCANDISK는 종료되고 운영 체제로 에러 수준 종료 코드 4를 돌려준다.
디스크의 표면을 분석하는 도중에 베드 섹터(베드 클로스터)를 만나면 SCANDISK는 이를 교정할 것인가를 사용자에게 확인한다. 만약, SCANDISK.INI 파일에서 베드 클로스터를 수정하도록 설정(Bad_Clusters = Fix)하였다면 이러한 확인 없이 즉시 디스크 표면을 교정한다. 디스크 표면의 교정은 현재 오류가 발생한 블럭의 내용을 다른 블럭으로 이동하고, 그 부분을 베드 섹터 영역으로 표시함으로써 다음에 그 장소에 데이터를 기록하지 않도록 한다.
만약, 디스크의 표면 분석에 대한 자세한 정보를 알고자 한다면 <More Info> 버튼을 선택한다. 이 버튼을 선택하면 디스크 표면 분석에 대한 정보를 담은 More Information 대화상자가 나타난다.
이 대화상자에는 표면 분석에 대한 정보가 포함되어 있는데 한 화면에 모두 나타낼 수 없기 때문에 대화상자의 오른쪽에 스크롤바를 준비하고 있다. 마우스를 사용하는 사용자인 경우에는 마우스로 스크롤 화살표를 클릭하여 대화상자의 내용을 스크롤할 수 있다. 만약, 키보드를 사용하고자 한다면 상.하 화살표 키나 <PgUp>, <PgDn> 키를 이용하여 대화 상자의 내용을 스크롤할 수 있다. 원래의 디스크 표면 분석 화면으로 되돌아 가려면 <OK> 버튼을 선택한다.
디스크의 논리적인 오류와 물리적인 표면 분석이 완료된 후 분석한 결과를 만약, 오류를 교정한 경우에는 오류를 교정한 내용에 관한 정보를 사용자가 볼 수 있도록 하기 위해 <View Log> 버튼과 <Exit> 버튼이 포함되어 있는 대화상자가 나타난다. 이 대화상자에서 디스크의 점검 결과를 보려면 <View Log> 버튼을 선택한다.
이 대화상자에는 디스크 점검에 관한 결과를 로그 파일로 작성할 내용이 포함되어 있는데, More Information 대화상자처럼 한 화면에 모두 나타낼 수 없기 때문에 대화 상자의 오른쪽에 스크롤바를 준비하고 있다. 마우스를 사용하는 사용자인 경우에는 마우스로 스크롤 화살표를 클릭하여 대화 상자의 내용을 스크롤할 수 있다. 만약, 키보드를 사용한다면 상.하 화살표 키나 <PgUp>, <PgDn> 키를 이용하여 대화상자의 내용을 스크롤할 수 있다.
로그 파일 대화상자에는 <OK> 버튼과 <Save Log> 버튼이 있는데, <OK> 버튼은 로그 파일을 저장하지 않고 SCANDISK를 종료하기 위해 사용한다. 만약, 로그 파일을 저장하려면 <Save Log> 버튼을 선택한다. 그러면, 시동 드라이브의 루트 디렉토리에 SCANDISK.LOG라는 파일명으로 로그 파일을 기록한다.
시동 드라이브의 루트 디렉토리에 이미 로그 파일이 있다면 기존의 로그 파일을 대체할 것인지 아니면 기존의 로그 파일의 뒤에 새로운 로그 파일의 내용을 추가할 것인지를 확인하는 대화상자가 나타난다.
이 대화 상자에서 기존의 로그 파일을 대체하여 기록하려면 <Overwrite> 버튼을 선택하고, 기존에 있는 로그 파일의 뒤에 새로운 로그 파일의 내용을 추가하려면 <Append> 버튼을 선택한다. 만약, <Don't Save Log> 버튼을 선택하면 로그 파일은 저장되지 않고 기존의 로그 파일을 내용이 나타난 대화상자가 다시 나타난다.
로그 파일 내용이 나타난 대화상자에서 <OK> 버튼을 선택함으로써 SCANDISK를 종료할 수 있다.
SCANDISK가 로그 파일까지 작성하는 동안 어떤 오류도 만나지 못한 경우 운영 체제에 종료 코드로 0을 돌려준다. 만약, 오류를 만나는 경우에는 적정한 에러 수준 종료 코드를 운영 체제에 돌려준다.